package BaseDatos;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *Clase para preparar setencias sql basicas.
 * @author usuario
 */
public class Sql {
    /**
     * Realiza una busqueda en BD con sentencias SQL simples.
     * Recibe una variable tipo cadena con el nombre de la tabla donde se desea buscar.
     * Retorna un objeto estatico tipo ResultSet.
     * @param tabla Variable tipo cadena con el nombre de la tabla donde se desea buscar.
     * @return objeto estatico tipo ResultSet con los resultados luego de buscar en la BD Diga en la columna solicitada.
     */
    public static ResultSet buscaTodoEn (String tabla){
        ResultSet rs=null;
        try{
        Connection conn = BaseDatos.getConexionDiga();
        String buscar = "SELECT * FROM Diga."+tabla+"";
        PreparedStatement ps = conn.prepareStatement(buscar);
        rs = ps.executeQuery();
        conn.close();
        }
        catch (Exception e){System.out.println("Error en conexion a BD: "+e);}
        return rs;
    }
    /**
     * Realiza una busqueda en BD con sentencias SQL simples.
       Recibe dos variables tipo cadena con el nombre de la tabla y el parametro que se desea buscar.
     * Retorna un objeto estatico tipo ResultSet.
     * @param busca Variable tipo cadena con el nombre del parametro que se desea buscar.
     * @param tabla Variable tipo cadena con el nombre de la tabla donde se desea buscar.
     * @return objeto estatico tipo ResultSet con los resultados luego de buscar en la BD Diga 
     * el parametro solicitado en la columna solicitada.
     */
    public static ResultSet buscaEstoEn (String busca, String tabla){
        ResultSet rs=null;
        try{
        Connection conn = BaseDatos.getConexionDiga();
        String buscar = "SELECT "+busca+" FROM Diga."+tabla+"";
        PreparedStatement ps = conn.prepareStatement(buscar);
        rs = ps.executeQuery();
        conn.close();
        }
        catch (Exception e){System.out.println("Error en conexion a BD: "+e);}
        return rs;
    }
    /**
     * Realiza una busqueda en BD con sentencias SQL simples. 
       Recibe cuatro variables tipo cadena con el nombre de la tabla, el parametro que se desea buscar,
       el nombre del parametro que condiciona la busqueda y el valor de dicho parametro.
     * Retorna un objeto estatico tipo ResultSet.
     * @param busca Variable tipo cadena con el nombre del parametro que se desea buscar.
     * @param tabla Variable tipo cadena con el nombre de la tabla donde se desea buscar.
     * @param valor Variable tipo cadena con el nombre del parametro que condiciona la busqueda.
     * @param condicion Variable tipo cadena con el valor del parametro que condiciona la busqueda.
     * @return objeto estatico tipo ResultSet con los resultados luego de buscar en la BD Diga 
     * el parametro solicitado en la columna solicitada con la codicion deseada.
     */
    public static ResultSet buscaEstoCuando(String busca, String tabla, String valor, String condicion){
        ResultSet rs=null;
        try{
            Connection conn = BaseDatos.getConexionDiga();
            String buscar = "SELECT "+busca+" FROM Diga."+tabla+" WHERE "+valor+" LIKE '"+condicion+"'";
            PreparedStatement ps = conn.prepareStatement(buscar);
            rs = ps.executeQuery();
            conn.close();
        }catch (Exception e){
            System.out.println("Error en conexion a BD: "+e);
        }
        return rs;
    }
   /**
    * Agregar a una  BD con sentencias SQL simples.
       Recibe tres variables tipo cadena con el nombre de la tabla, los parametros 
       que se insertaran a la BD y los valores de dichos parametros.
       Inserta los valores en los parametros de la tabla deseada.
     * @param tabla Variable tipo cadena con el nombre de la tabla donde se desea insertar.
     * @param valores Variable tipo cadena con el nombre de los parametros que se le insertaran valores.
     * @param inserta Variable tipo cadena con el valor que se insertara.
     */
    public static void instertaEstoEn (String tabla, String valores, String inserta){
        boolean rs=false;
        try{
        Connection conn = BaseDatos.getConexionDiga();
        String buscar = "INSERT INTO Diga."+tabla+" ("+valores+") VALUES ("+inserta+")";
        PreparedStatement ps = conn.prepareStatement(buscar);
        rs = ps.execute();
        conn.close();
        }
        catch (Exception e){System.out.println("Error en conexion a BD: "+e);}
    }
    /**
     * Agrega a una  BD con sentencias SQL simples.
       Recibe cuatro variables tipo cadena con el nombre de la tabla, los parametros 
       que se insertaran a la BD, los valores de dichos parametros y la condicion que especifica
       donde se insertaran.
       Inserta los valores en los parametros de la tabla deseada cumpliendo una condicion deseada.
     * @param tabla Variable tipo cadena con el nombre de la tabla donde se desea insertar.
     * @param valores Variable tipo cadena con el nombre de los parametros que se le insertaran valores.
     * @param inserta Variable tipo cadena con el valor que se insertara.
     * @param condicion Variable tipo cadena que condiciona donde se insertaran los valores.
     */
    public static void instertaEstoCuando (String tabla, String valores, String inserta, String condicion){
        boolean rs=false;
        try{
        Connection conn = BaseDatos.getConexionDiga();
        String buscar = "INSERT INTO Diga."+tabla+" ("+valores+") VALUES ("+inserta+") WHERE "+condicion+"";
        PreparedStatement ps = conn.prepareStatement(buscar);
        rs = ps.execute();
        conn.close();
        }
        catch (Exception e){
            System.out.println("Error en conexion a BD: "+e);
        }
    }
    /**
     * Modifica un registro en la BD con sentencias SQL simples.
     * Recibe tres parametros tipo cadena con el nombre de la tabla, el parametro
       que se va a actualizar y lo que se agregara en dicho parametro
     * Actualiza un registro en BD ya existente.
     * @param tabla Variable tipo cadena con el nombre de la tabla donde se desea actualizar.
     * @param parametro Variable tipo cadena con el nombre del parametro que se desea actualizar.
     * @param agregar Variable tipo cadena con el valor que se insertara en el parametro deseado.
     */
    public static void agregaEstoEn(String tabla, String parametro, String agregar){
        boolean rs=false;
        try{
        Connection conn = BaseDatos.getConexionDiga();
        String update = "UPDATE Diga."+tabla+" SET ("+parametro+") = "+agregar+"";
        PreparedStatement ps = conn.prepareStatement(update);
        rs = ps.execute();
        conn.close();
        }
        catch (Exception e){
        System.out.println("Error en conexion a BD: "+e);
        }
    }
}
